package com.east.handler;

import com.east.result.Result;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.HandlerMethod;

/**
 * 全局异常处理类
 * @RestControllerAdvice 表示处理所有被 @RestController 注解标注的类
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理数据库删除数据时发生外键绑定时候的异常
     * @param e             发生的异常
     * @param handlerMethod 发生异常的方法
     * @return
     */
    @ExceptionHandler(DataAccessException.class)
    public Result dataAccessExceptionHandler(Exception e, HandlerMethod handlerMethod) {
        e.printStackTrace();
        System.out.println(0);
        return Result.FAIL("数据访问异常，被删除的数据局或许被其他数据引用");
    }
}
